var express = require("express")
var router = express.Router()
var User = require("../models/user")
var Movie = require("../models/movie")
var Comment = require("../models/comment")
var Article = require("../models/article")
var Recommend = require("../models/recommend")

// 后台管理需要验证其用户的后台管理权限
// 后台管理admin，添加新电影
router.post("/movieAdd", function (req, res, next) {
	const {
		body: { id, token, username, movieName, movieImg, movieVideo, movieDownload, movieMainPage },
	} = req
	if (!id) {
		res.json({ status: 500, message: "用户传递错误" })
	}
	if (!token) {
		res.json({ status: 500, message: "用户登录错误" })
	}
	if (!username) {
		res.json({ status: 500, message: "用户名为空" })
	}
	if (!movieName) {
		res.json({ status: 500, message: "电影名称为空" })
	}
	if (!movieImg) {
		res.json({ status: 500, message: "电影图片为空" })
	}
	if (!movieVideo) {
		res.json({ status: 500, message: "电影视频为空" })
	}
	if (!movieDownload) {
		res.json({ status: 500, message: "电影下载地址为空" })
	}

	// checkAdminPower哪里定义的？？？
	var check = checkAdminPower(username, token, id)
	console.log("check", check)

	if (check.error == 0) {
		User.findByUsername(username, function (err, findUser) {
			if (findUser.userAdmin && !findUser.userStop) {
				var saveMovie = new Movie({
					movieName,
					movieImg,
					movieVideo,
					movieDownload,
					movieTime: Date.now(),
					movieNumSupport: 0,
					movieNumDownload: 0,
					movieMainPage,
				})
				// 保存到数据库
				saveMovie.save(function (err) {
					if (err) {
						res.json({ status: 500, message: "添加失败", data: err })
					} else {
						res.json({ status: 200, message: "添加成功" })
					}
				})
			} else {
				res.json({ status: 500, mesage: "用户没有权限或已经停用" })
			}
		})
	} else {
		res.json({ status: 500, message: check.message })
	}
})

// 删除电影
router.post("/movieDel", function (req, res, next) {
	const {
		body: { id, token, username, movieId },
	} = req
	if (!id) {
		res.json({ status: 500, message: "用户传递错误" })
	}
	if (!token) {
		res.json({ status: 500, message: "登录错误" })
	}
	if (!username) {
		res.json({ status: 500, message: "用户名为空" })
	}
	if (!movieId) {
		res.json({ status: 500, message: "电影id传递失败" })
	}

	var check = checkAdminPower(username, token, id)
	if (check.error == 0) {
		User.findByUsername(username, function (err, findUser) {
			if (findUser.userAdmin && !findUser.userStop) {
				// 删除电影
				Movie.remove({ _id: movieId }, function (err, delMovie) {
					if (err) {
						res.json({ status: 500, mesage: "删除失败" })
					}
					res.json({ status: 200, mesage: "删除成功", data: delMovie })
				})
			} else {
				res.json({ status: 500, mesage: "用户没有权限或已经停用" })
			}
		})
	} else {
		res.json({ status: 500, message: check.message })
	}
})

// 更新电影
router.post("/movieUpdate", function (req, res, next) {
	const {
		body: { id, token, username, movieId, movieInfo },
	} = req
	if (!id) {
		res.json({ status: 500, message: "用户传递错误" })
	}
	if (!token) {
		res.json({ status: 500, message: "登录错误" })
	}
	if (!username) {
		res.json({ status: 500, message: "用户名为空" })
	}
	if (!movieId) {
		res.json({ status: 500, message: "电影id传递失败" })
	}
	var saveDate = movieInfo || {}
	var check = checkAdminPower(username, token, id)
	if (check.error == 0) {
		User.findByUsername(username, function (err, findUser) {
			if (findUser.userAdmin && !findUser.userStop) {
				Movie.update({ _id: movieId }, saveDate, function (err, updateMovie) {
					console.log("updateMovie", updateMovie)

					res.json({ status: 200, message: "更新成功", data: updateMovie })
				})
			} else {
				res.json({ status: 500, mesage: "用户没有权限或已经停用" })
			}
		})
	} else {
		res.json({ status: 500, message: check.message })
	}
})

// 获取所有电影
router.get("/movie/list", function (req, res, next) {
	Movie.findAll(function (err, allMovies) {
		res.json({ status: 200, message: "获取成功", data: allMovies })
	})
})

// 获取电影详情
router.post("/movie/detail", function (req, res, next) {
	const {
		body: { id },
	} = req
	Movie.findById(id, function (err, movie) {
		res.json({ status: 200, message: "获取成功", data: movie })
	})
})

// 获取用户评论
router.get("/comments/list", function (req, res, next) {
	Comment.findAll(function (err, allComments) {
		res.json({ status: 200, message: "获取成功", data: allComments })
	})
})

// 审核用户评论
router.post("/checkComment", function (req, res, next) {
	const {
		body: { id, token, username, commentId },
	} = req
	if (!id) {
		res.json({ status: 500, message: "用户传递错误" })
	}
	if (!token) {
		res.json({ status: 500, message: "登录错误" })
	}
	if (!username) {
		res.json({ status: 500, message: "用户名为空" })
	}
	if (!commentId) {
		res.json({ status: 500, message: "评论id传递失败" })
	}
	var check = checkAdminPower(username, token, id)
	if (check.error == 0) {
		User.findByUsername(username, function (err, findUser) {
			if (findUser.userAdmin && !findUser.userStop) {
				Comment.update({ _id: commentId }, { check: true }, function (err, updateComment) {
					res.json({ status: 200, message: "审核成功", data: updateComment })
				})
			} else {
				res.json({ status: 500, mesage: "用户没有权限或已经停用" })
			}
		})
	} else {
		res.json({ status: 500, message: check.message })
	}
})

// 删除用户评论
router.post("/delComment", function (req, res, next) {
	const {
		body: { id, token, username, commentId },
	} = req
	if (!id) {
		res.json({ status: 500, message: "用户传递错误" })
	}
	if (!token) {
		res.json({ status: 500, message: "登录错误" })
	}
	if (!username) {
		res.json({ status: 500, message: "用户名为空" })
	}
	if (!commentId) {
		res.json({ status: 500, message: "评论id传递失败" })
	}
	var check = checkAdminPower(username, token, id)
	if (check.error == 0) {
		User.findByUsername(username, function (err, findUser) {
			if (findUser.userAdmin && !findUser.userStop) {
				Comment.remove({ _id: commentId }, function (err, delComment) {
					res.json({ status: 200, message: "删除成功", data: delComment })
				})
			} else {
				res.json({ status: 500, mesage: "用户没有权限或已经停用" })
			}
		})
	} else {
		res.json({ status: 500, message: check.message })
	}
})

// 封停用户
router.post("/stopUser", function (req, res, next) {
	const {
		body: { token, username, userId },
	} = req
	if (!token) {
		res.json({ status: 500, message: "登录错误" })
	}
	if (!username) {
		res.json({ status: 500, message: "用户名为空" })
	}
	if (!userId) {
		res.json({ status: 500, message: "用户id传递失败" })
	}
	var check = checkAdminPower(username, token, userId)
	if (check.error == 0) {
		User.findByUsername(username, function (err, findUser) {
			if (findUser.userAdmin && !findUser.userStop) {
				User.update({ _id: userId }, { userStop: true }, function (err, updateUser) {
					res.json({ status: 200, message: "封停成功", data: updateUser })
				})
			} else {
				res.json({ status: 500, mesage: "用户没有权限或已经停用" })
			}
		})
	} else {
		res.json({ status: 500, message: check.message })
	}
})

// 更新用户密码
router.post("/changeUser", function (req, res, next) {
	const {
		body: { token, username, userId, newPassword },
	} = req
	if (!token) {
		res.json({ status: 500, message: "登录错误" })
	}
	if (!username) {
		res.json({ status: 500, message: "用户名为空" })
	}
	if (!userId) {
		res.json({ status: 500, message: "用户id传递失败" })
	}
	if (!newPassword) {
		res.json({ status: 500, message: "用户新密码错误" })
	}
	// 检测权限
	var check = checkAdminPower(username, token, userId)
	if (check.error == 0) {
		User.findByUsername(username, function (err, findUser) {
			if (findUser.userAdmin && !findUser.userStop) {
				User.update({ _id: userId }, { password: newPassword }, function (err, updateUser) {
					res.json({ status: 200, message: "修改成功", data: updateUser })
				})
			} else {
				res.json({ status: 500, mesage: "用户没有权限或已经停用" })
			}
		})
	} else {
		res.json({ status: 500, message: check.message })
	}
})

// 显示所有用户
router.post("/showUser", function (req, res, next) {
	const {
		body: { userId, token, username },
	} = req
	if (!userId) {
		res.json({ status: 500, message: "用户id传递错误" })
	}
	if (!token) {
		res.json({ status: 500, message: "登录错误" })
	}
	if (!username) {
		res.json({ status: 500, message: "用户名为空" })
	}
	// 检测权限
	var check = checkAdminPower(username, token, userId)
	if (check.error == 0) {
		User.findByUsername(username, function (err, findUser) {
			if (findUser.userAdmin && !findUser.userStop) {
				User.findAll(function (err, allUser) {
					res.json({ status: 200, message: "修改成功", data: allUser })
				})
			} else {
				res.json({ status: 500, mesage: "用户没有权限或已经停用" })
			}
		})
	} else {
		res.json({ status: 500, message: check.message })
	}
})

// 管理用户权限
router.post("/powerUpdate", function (req, res, next) {
	const {
		body: { id, token, username },
	} = req
	if (!id) {
		res.json({ status: 500, message: "用户传递错误" })
	}
	if (!token) {
		res.json({ status: 500, message: "登录错误" })
	}
	if (!username) {
		res.json({ status: 500, message: "用户名为空" })
	}
	// 检测权限，id为当前登录人的userId
	var check = checkAdminPower(username, token, id)
	if (check.error == 0) {
		User.findByUsername(username, function (err, findUser) {
			if (!findUser.userAdmin && !findUser.userStop) {
				User.update({ _id: findUser._id }, { userAdmin: true }, function (err, updateUser) {
					res.json({ status: 200, message: "修改成功", data: updateUser })
				})
			} else {
				res.json({ status: 500, mesage: "用户没有权限或已经停用" })
			}
		})
	} else {
		res.json({ status: 500, message: check.message })
	}
})

// 新增文章
router.post("/articleAdd", function (req, res, next) {
	const {
		body: { token, username, userId, articleTitle, articleContext },
	} = req
	if (!token) {
		res.json({ status: 500, message: "登录错误" })
	}
	if (!username) {
		res.json({ status: 500, message: "用户名为空" })
	}
	if (!userId) {
		res.json({ status: 500, message: "用户id传递失败" })
	}
	if (!articleTitle) {
		res.json({ status: 500, message: "文章名称为空" })
	}
	if (!articleContext) {
		res.json({ status: 500, message: "文章内容为" })
	}
	// 检测权限
	var check = checkAdminPower(username, token, userId)
	if (check.error == 0) {
		User.findByUsername(username, function (err, findUser) {
			if (findUser.userAdmin && !findUser.userStop) {
				var saveArticle = new Article({
					articleTitle,
					articleContext,
					articleTime: Date.now(),
				})
				saveArticle.save(function (err) {
					if (err) {
						res.json({ status: 500, message: err })
					}
					res.json({ status: 200, message: "添加成功" })
				})
			} else {
				res.json({ status: 500, mesage: "用户没有权限或已经停用" })
			}
		})
	} else {
		res.json({ status: 500, message: check.message })
	}
})

// 删除文章
router.post("/delArticle", function (req, res, next) {
	const {
		body: { id, token, username, articleId },
	} = req
	if (!id) {
		res.json({ status: 500, message: "用户传递错误" })
	}
	if (!token) {
		res.json({ status: 500, message: "登录错误" })
	}
	if (!username) {
		res.json({ status: 500, message: "用户名为空" })
	}
	if (!articleId) {
		res.json({ status: 500, message: "文章名称为空" })
	}
	// 检测权限
	var check = checkAdminPower(username, token, id)
	if (check.error == 0) {
		User.findByUsername(username, function (err, findUser) {
			if (findUser.userAdmin && !findUser.userStop) {
				Article.remove({ _id: articleId }, function (err, delArticle) {
					res.json({ status: 200, message: "删除成功", data: delArticle })
				})
			} else {
				res.json({ status: 500, mesage: "用户没有权限或已经停用" })
			}
		})
	} else {
		res.json({ status: 500, message: check.message })
	}
})

// 新增主页推荐
router.post("/addRecommend", function (req, res, next) {
	const {
		body: { id, token, username, recommendImg, recommendSrc, recommendTitle },
	} = req
	if (!id) {
		res.json({ status: 500, message: "用户传递错误" })
	}
	if (!token) {
		res.json({ status: 500, message: "登录错误" })
	}
	if (!username) {
		res.json({ status: 500, message: "用户名为空" })
	}
	if (!recommendImg) {
		res.json({ status: 500, message: "推荐图片为空" })
	}
	if (!recommendSrc) {
		res.json({ status: 500, message: "推荐跳转地址名称为空" })
	}
	if (!recommendTitle) {
		res.json({ status: 500, message: "推荐标题为空" })
	}
	// 检测权限
	var check = checkAdminPower(username, token, id)
	if (check.error == 0) {
		User.findByUsername(username, function (err, findUser) {
			if (findUser.userAdmin && !findUser.userStop) {
				var saveRecommend = new recommendImg({
					recommendImg,
					recommendSrc,
					recommendTitle,
				})
				saveRecommend.save(function (err) {
					if (err) {
						res.json({ status: 500, message: err })
					} else {
						res.json({ status: 200, message: "保存成功" })
					}
				})
			} else {
				res.json({ status: 500, mesage: "用户没有权限或已经停用" })
			}
		})
	} else {
		res.json({ status: 500, message: check.message })
	}
})

// 删除热点信息
router.post("/addRecommend", function (req, res, next) {
	const {
		body: { id, token, username, recommendId },
	} = req
	if (!id) {
		res.json({ status: 500, message: "用户传递错误" })
	}
	if (!token) {
		res.json({ status: 500, message: "登录错误" })
	}
	if (!username) {
		res.json({ status: 500, message: "用户名为空" })
	}
	if (!recommendId) {
		res.json({ status: 500, message: "评论id传递失败" })
	}
	// 检测权限
	var check = checkAdminPower(username, token, id)
	if (check.error == 0) {
		User.findByUsername(username, function (err, findUser) {
			if (findUser.userAdmin && !findUser.userStop) {
				Recommend.remove({ _id: recommendId }, function (err, delRecommend) {
					res.json({ status: 200, mesage: "删除成功", data: delRecommend })
				})
			} else {
				res.json({ status: 500, mesage: "用户没有权限或已经停用" })
			}
		})
	} else {
		res.json({ status: 500, message: check.message })
	}
})

// 校验当前登录人是否是管理员
function checkAdminPower(username, token, id) {
	const bool = username && token && id
	User.findById(id, function (err, findUser) {
		if (err) {
			res.json({ status: 500, message: "未找到登录人" })
		}
	})
	return {
		error: bool ? 0 : 1,
		message: bool ? "OK" : "权限错误",
		data: {},
	}
}

module.exports = router
